The present invention relates to a data network, and more particularly, relates to a Virtual Interrupt Mechanism for handling the flow of event information in a host.
Computer systems are designed to support one or more input/output (I/O) devices, including, for example, keyboards, input mouses, disk controllers, serial and parallel ports to printers, scanners, and display devices. These I/O devices and hardware resources may be available locally within a host or remotely via a data network (cluster) of interconnected nodes and switches that are linked together by a switched fabric. These I/O devices require intermittent servicing by a host processor in order to ensure proper operation. The host processor may be required to service these I/O devices with a specific resource in accordance with their individual needs while running one or more background programs. Usually, device event (interrupt) requests from hardware (e.g., local I/O devices or network adapters for communication with remote I/O devices via the switched fabric) 20 in a host 10, as shown in FIG. 1, are routed to an interrupt controller (IC) 30 that can interrupt the host processor, forcing a branch (driver) 42 of an operating system (OS) 40 via a Kernel 44 to a special Interrupt Service Routine (IRS) 46 for execution when required. The IRS 46 typically performs actions required by the operating system (OS) 40 and the hardware 20, disables interrupt signal generation from the hardware 20, and determines the meaning of the interrupt.
However, when multiple software drivers 42A-42N reside in a host 10 that share a single hardware 20 and are not aware of each other in an operating system environment as shown in FIG. 2, there may be problems in sharing a single hardware 20. In addition, there is no mechanism for handling a large number of interrupts (event requests) and directing a particular interrupt (event request) and associated information to a specific driver in a host system having multiple software drivers. Accordingly, there is an urgent need for a mechanism to handle a large number of interrupts (event requests) and effectively direct a particular interrupt (event request) and associated information to a specific driver in a host, especially when such a host is connected to a data network of different endpoints (nodes) and switches that are linked together by a switched fabric.
Accordingly, various embodiments of the present invention are directed to a host coupled to a switched fabric including one or more fabric-attached I/O controllers. Such a host may comprise a processor; at least one host-fabric adapter coupled to the processor and provided to interface with the switched fabric, which generates an event; and an operating system comprising multiple channel drivers and a host-fabric adapter software stack providing a virtual interrupt mechanism to each channel driver to handle the flow of event information between the host-fabric adapter and a designated channel driver for event processing.